class Solution {//leetcode1765——地图中的最高点
private:
    int dx[4]={0,0,-1,1};
    int dy[4]={1,-1,0,0};
public:
    vector<vector<int>> highestPeak(vector<vector<int>>& isWater) {
        int m=isWater.size(),n=isWater[0].size();
        vector<vector<int>> high(m,vector<int> (n,-1));
        queue<pair<int,int>> q; 
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(isWater[i][j]==1){
                    high[i][j]=0;
                    q.push({i,j});
                } 
            }
        }
        while(q.size()){
            auto [a,b]=q.front();
            for(int i=0;i<4;i++){
                int x=a+dx[i];
                int y=b+dy[i];
                if(x>=0&&x<m&&y>=0&&y<n&&high[x][y]==-1){
                    high[x][y]=high[a][b]+1;
                    q.push({x,y});
                }
            }
            q.pop();
        }
        return high;
    }
};